package com.tlias.AOP;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Slf4j
@Component
@Aspect
public class AnnotationAOP {

    //相当于生效范围为所有使用了@Log注解的方法
    @Pointcut("@annotation(com.tlias.AOP.Log)")//定义切点，匹配所有标注了@Log注解的方法
    public void pointcut() {}

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        log.info("方法执行前");
        Object result = joinPoint.proceed();
        log.info("方法执行后");
        return result;
    }
}
